1 Pendahuluan

Data berbentuk time series bisa dianalisa dengan berbagai macam cara. Salah satu analisa yang sering digunakan di dunia real adalah time series forecast modelling.

1.1 Tujuan

Apakah bisa kita membuat model time series untuk melakukan forecast data harga gula?

1.2 Data yang dipakai

Data yang digunakan diambil dari situs isosugar.org. Data yang tersedia adalah data harga gula harian sejak dari Januari 2017 hingga Januari 2020.

Data diambil dengan cara web scrap.

Kita hanya akan membuat model berdasarkan data Januari 2017 hingga Desember 2019 sedangkan data Januari 2020 akan digunakan untuk validasi model forecast.

1.3 Missing data NA

Dari data harian yang ada, ternyata pada saat hari libur datanya kosong (NA). Data kosong ini akan diisi harga pada hari sebelumnya (misal: closing harga Jumat atau kondisi lainnya).

1.4 Bagaimana visualisasi datanya?


2 Pre-Analisa

2.1 Stationary

Salah satu syarat agar kita bisa membangun model forecast dari data time series adalah:

Data yang digunakan harus stationary.

Bagaimana cara mengeceknya?

## 
##  Augmented Dickey-Fuller Test
## 
## data:  ts
## Dickey-Fuller = -2.3841, Lag order = 10, p-value = 0.4157
## alternative hypothesis: stationary
## [1] "Tidak stationary"

Ternyata datanya tidak stasioner sehingga perlu ada transformasi agar menjadi stasioner. Caranya adalah dengan membuat data time series baru dengan membuat selisih harga dengan lag = n hari.

Bagaimana mencari nilai n?

## [1] 1

Sehingga didapat lag = 1 hari.

new_time_series = current_time_series[i+1] - current_time_series[i]

Bagaimana hasil transformasinya?

Mari kita cek apakah data hasil transformasinya stasioner atau belum!

## 
##  Augmented Dickey-Fuller Test
## 
## data:  ts_transformed
## Dickey-Fuller = -9.7713, Lag order = 10, p-value = 0.01
## alternative hypothesis: stationary
## [1] "stationary"

Ternyata hasilnya stasioner. Berarti kita akan membuat model berdasarkan data hasil transformasi ini.

2.2 Decomposition

Mari kita lihat dulu bagaimana jika data ini kita dekomposisi menggunakan STL.


3 Membuat Model Forecast Model

Kita akan membuat model untuk forecast harga gula. Agar bisa melakukan cross validation, data akan kita pecah menjadi dua, yakni:

  1. train dataset, yakni berisi data selisih harga gula 2017 - 2019.
  2. test dataset, yakni data harga gula pada Januari 2020 agar kita bisa menilai performance dari model yang kita buat.

Kita akan membuat beberapa model time series, model yang terbaik akan dipilih berdasarkan validasi dengan test dataset.

3.1 Model I: ARIMA

##                        ME      RMSE       MAE MPE MAPE      MASE
## Training set -0.005352082 0.1431542 0.1071448 NaN  Inf 0.5904279
## Test set      0.046530374 0.1853718 0.1584322 NaN  Inf 0.8730503
##                      ACF1 Theil's U
## Training set -0.001491404        NA
## Test set     -0.145688638       NaN

3.2 Model II: Exponential Smoothing

##                       ME      RMSE       MAE MPE MAPE      MASE
## Training set 0.000166282 0.1441229 0.1073335 NaN  Inf 0.5914675
## Test set     0.051484652 0.1853130 0.1590786 NaN  Inf 0.8766121
##                     ACF1 Theil's U
## Training set  0.01030034        NA
## Test set     -0.13589106       NaN

3.3 Model III: Auto ARIMA

##                        ME      RMSE       MAE MPE MAPE      MASE
## Training set -0.005011514 0.1766329 0.1126118 NaN  Inf 0.6205543
## Test set      0.046968499 0.1532125 0.1046278 NaN  Inf 0.5765575
##                      ACF1 Theil's U
## Training set  0.001648822        NA
## Test set     -0.139286886       NaN

3.4 Model IV: HOLTWINTER

##                         ME      RMSE       MAE MPE MAPE      MASE
## Training set -0.0003915366 0.1944674 0.1265256 NaN  Inf 0.6972266
## Test set      0.0378335008 0.2279168 0.1852144 NaN  Inf 1.0206351
##                    ACF1 Theil's U
## Training set  0.0183258        NA
## Test set     -0.2035556       NaN

3.5 Model V: NAIVE

##                         ME      RMSE       MAE MPE MAPE      MASE
## Training set -9.149131e-05 0.2489506 0.1712351 NaN  Inf 0.9436014
## Test set      1.468182e-01 0.2064968 0.1677273 Inf  Inf 0.9242711
##                    ACF1 Theil's U
## Training set -0.4749039        NA
## Test set     -0.1338053       NaN

3.6 Model VI: TBATS

##                        ME      RMSE       MAE  MPE MAPE      MASE
## Training set -0.003326488 0.1751151 0.1122461  NaN  Inf 0.6185389
## Test set      0.041187355 0.1510163 0.1042150 -Inf  Inf 0.5742830
##                     ACF1 Theil's U
## Training set  0.01730537        NA
## Test set     -0.13264193       NaN

4 Model yang Dipilih

Jika hanya melihat dari MAE, model TBATS dan Auto ARIMA memberikan nilai terkecil untuk validasi terhadap test dataset.